During the process of developing a circuit design, the behavior of the design is simulated based on a specification of the circuit design. Simulating the design helps to verify correct behavior prior to physical implementation of the circuit. Wasted manufacturing costs due to faulty design may thereby be avoided. Numerous tools are available for simulating circuit designs including, for example, high-level modeling systems (HLMS).
An HLMS is a software tool in which circuit designs can be described in a hardware description language (e.g., HDL and VHDL), simulated, and translated into executable simulation code or into a configuration data stream that can be used to configure a programmable integrated circuit (IC) of a hardware platform to implement the circuit design. In some applications, a circuit design implemented in the programmable IC is configured to communicate with one or more other circuits of a hardware platform (e.g., an input/output interface) that are coupled to the programmable IC.
In an HLMS-based design, there may be some components external to the HLMS environment that under certain circumstances, are desirable to have involved in HLMS simulations. For instance, in some applications, a circuit design to be implemented in a programmable IC of a hardware platform is configured to communicate with one or more hardware devices (e.g., an input/output interface) of the hardware platform. In some development flows, after development of the circuit design in the HLMS, the circuit design is implemented in the hardware platform to verify proper operation of the circuit design with the hardware devices by monitoring input and output signals. For ease of reference, configuration of the programmable IC to implement the circuit design may be referred to as deployment of the circuit design or emulation of the circuit design, and such terms may be used interchangeably herein. Based on the monitored input and output signals of the deployed circuit design, further modification to the circuit design may be required along with simulation and subsequent verification of the modified circuit design in the programmable IC.
In some development flows, data signals captured from one or more hardware devices of the hardware platform are incorporated into an HLMS-based simulation. This may be referred to as co-simulation. Example co-simulation platforms include both software-based and hardware-based systems. In the software-based system, for example, a portion of the design is simulated with software running on a workstation. During simulation, data signals are communicated to and from the devices of the hardware platform to capture relevant data from the hardware devices that may be used to identify incorrect inter-operation of the circuit design with the hardware devices. In this manner, development of the circuit design may be achieved with fewer cycles of development, simulation, and verification.
In such co-simulation, the programmable IC of the hardware platform is configured to implement an interface circuit that provides data signals between the HLMS and the hardware devices of the hardware platform during simulation. The interface circuit is configured by a designer to communicate data signals to and from desired ports of external circuits. The circuit design is also configured by the designer to map ports of the circuit design to correct ports of the interface circuit. Moreover, after simulation of the circuit design in the HLMS, the circuit design must be reconfigured by a designer to map ports of the circuit design directly to ports of the hardware devices of the hardware platform so the circuit design may be implemented in the target programmable IC. Configuration of an interface circuit and mapping of ports is a lengthy manual process, which may present a substantial barrier for a designer.